/**
 * 存储用户信息: token、个人信息
 */
import { setToken, getToken, removeToken } from '@/utils/auth'
// 导入登录接口
import { loginApi, getUserInfoApi, getUserDetailByIdApi } from '@/api/user'
export default {
  namespaced: true,
  // 1.定义变量
  state: {
    token: getToken() || '',
    // 用户信息
    userInfo: {}
  },
  // 2. 修改变量(同步)
  mutations: {
    // 存储token
    setToken(state, token) {
      state.token = token
      setToken(token)
    },
    // 删除token
    delToken(state) {
      state.token = ''
      removeToken()
    },
    // 存储用户信息
    setUserInfo(state, info) {
      state.userInfo = info
    },
    // 删除用户信息
    delUserInfo(state) {
      state.userInfo = {}
    }
  },
  // 3. 调用后台接口发请求(异步)
  actions: {
    async loginAction(ctx, loginForm) {
      const token = await loginApi(loginForm)
      console.log('登录成功token:', token)
      ctx.commit('setToken', token)
    },
    async getUserInfoAction(ctx, loginForm) {
      // 1.获取用户个人信息，但是没有头像
      const userInfo = await getUserInfoApi()
      console.log('获取用户个人信息', userInfo)
      // 2.获取用户头像信息
      const avatorInfo = await getUserDetailByIdApi(userInfo.userId)
      console.log('用户头像信息', avatorInfo)
      ctx.commit('setUserInfo', { ...userInfo, ...avatorInfo })
    },
    logoutAction({ commit }) {
      // 删除用户信息
      commit('delToken')
      commit('delUserInfo')
    }
  }
}
